A virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of a physical computer system. Virtualization permits multiplexing of an underlying host computer between different VMs. The host computer typically allocates a certain amount of its resources to each of the VMs. Each VM then can use the allocated resources to execute applications, including operating systems (referred to as guest operating systems (OS)). The software layer providing the virtualization is commonly referred to as a hypervisor and is also known as a virtual machine monitor (VMM), a kernel-based hypervisor, or a host operating system. The hypervisor usually emulates the underlying hardware of the host computer, making the use of the VM transparent to the guest operating system and the user of the computer. A VM may have a virtual processor, virtual system memory, virtual storage, and various virtual devices. Virtual machines may be migrated between a source host computing platform (“the source host”) and a destination host computing platform (“the destination host”) connected over a network, which may be a local-area network or a wide area-network that may include the Internet.
One method of migrating a virtual machine from a source host to a destination host over a network is to permit a running source VM to continue to run during the migration process, a technique known as live migration. Live migration typically permits a running VM to be moved between different physical machines without disconnecting a running client or application program. For a successful live migration, memory, storage, and network connectivity of the VM should be migrated from the source host to the destination host. While the VM on the source host is running, its memory can be copied to the destination host. Memory on the source VM can change during the memory copy process. If the memory of the source VM changes, the changed memory can be copied to the destination host. When a rate of change of the memory is below a threshold, the VM on the source can be suspended and the state of the VM, including memory, storage, and network connectivity, can be copied to the destination host.